﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using Sistema_Totem.Logica.Excepciones;
using Sistema_Totem.Logica.Clases;

namespace Sistema_Totem.Datos.SqlServer
{
    public class SqlServerPlantilla
    {

        #region Agregar Plantilla


        /// <summary>
        /// Insertar Plantilla Nueva en la BD.
        /// </summary>
        /// <param name="miPlantilla"></param>
        /// <returns></returns>
        public bool AgregarPlantilla(Plantilla miPlantilla)
        {
            Conexion bd = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
                bd.AbrirConexionBd();

                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                /*

                command.CommandText = "[dbo].[insertarPlantilla]";
                command.CommandTimeout = 10;

                command.Parameters.AddWithValue("@codigo", miPlantilla.Codigos);
                command.Parameters.AddWithValue("@nombre", miPlantilla.Nombres);
                command.Parameters.AddWithValue("@fecha_in", miPlantilla.FechaInicio);
                command.Parameters.AddWithValue("@fecha_fi", miPlantilla.FechaFin);
                command.Parameters.AddWithValue("@descripcion", miPlantilla.Descripcion);
                command.Parameters.AddWithValue("@status", miPlantilla.Status);
                command.Parameters.AddWithValue("@area", miPlantilla.Area);
                 
                */

                SqlDataReader readers = command.ExecuteReader();

                readers.Close();
                bd.CerrarConexionBd();

                return true;

            }
            catch (SqlException e)
            {
                bd.CerrarConexionBd();
                return false;
            }
            catch (Exception)
            {
                bd.CerrarConexionBd();
                return false;
            }

        }//end public bool AgregarPlantilla(Plantilla miPlantilla)

        #endregion Agregar Plantilla




        #region Consultar Plantilla

        public List<Plantilla> ConsultarPlantilla()
        {
            //Se instancia un objeto conexion:
            Conexion miConexion = new Conexion();

            SqlCommand command = new SqlCommand();

            SqlDataReader reader = null;

            List<Plantilla> miListaPlantilla = new List<Plantilla>();

            try
            {
                //Se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //StoredProcedures que hace el: Consultar   Plantilla:
                /*command.CommandText = "[dbo].[ConsultarPlantilla]";
                
                */
                command.CommandTimeout = 10;

                //Se ejecuta el metodo del store procedure que busca todos las Plantillas del sistema:
                reader = command.ExecuteReader();

                //Se recorre cada row
                while (reader.Read())
                {
                    Plantilla miPlantilla = new Plantilla();

                    //Se asigna cada atributo al objeto Plantilla
                    //miPlantilla.id = reader.GetInt32(0);

                    /*  CAPTURA DE ATRIBUTOS:
                    miPlantilla.Codigos = reader.GetString(1);
                    miPlantilla.Nombre = reader.GetString(2);
                    miPlantilla.Area = reader.GetString(3);
                    */
                      
                    //se inserta el cliente en la lista de clientes
                    miListaPlantilla.Add(miPlantilla);

                }//end while (reader.Read())

                return miListaPlantilla;
            }
            catch (SqlException)
            {
                return miListaPlantilla;//cambiar luego es una prueba
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }

        #endregion Consultar Plantilla


        #region Consultar Detalle Plantilla

        public Plantilla ConsultarDetalleProyecto(int _idPlantilla)
        {
            //Se instancia un objeto conexion 
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();

            SqlDataReader reader = null;
            Plantilla _miPlantilla = new Plantilla();


            try
            {
                //Se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;

                /* //Se invca al Stored Procedure que Consulta el Detalle de la Plantilla:
                
                command.CommandText = "[dbo].[mostrarPlantilla]";
                */

                command.CommandTimeout = 10;

                command.Parameters.AddWithValue("@id", _idPlantilla);


                //se ejecuta el metodo del store procedure que busca todos los clientes del sistema
                reader = command.ExecuteReader();

                //Se recorre cada row
                while (reader.Read())
                {

                    //Se asigna cada atributo al objeto cliente
                    //_miProyecto.IdProyecto = reader.GetInt32(0);

                    /*
                    _miPlantilla.Codigos = reader.GetString(1);
                    _miPlantilla.Nombre = reader.GetString(2);
                    _miPlantilla.FechaInicio = reader.GetDateTime(3);
                    _miPlantilla.FechaFin = reader.GetDateTime(4);
                    _miPlantilla.Descripcion = reader.GetString(5);
                    _miPlantilla.Status = reader.GetString(6);
                    _miPlantilla.Area = reader.GetString(7);
                    
                    */

                }//end while (reader.Read())

                return _miPlantilla;

            }
            catch (SqlException)
            {
                return _miPlantilla;//cambiar luego es una prueba
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }
        #endregion Consultar Plantilla


        #region Modificar Plantilla


        #endregion Modificar Plantilla

        #region Consultar Todas Plantillas

        public List<Plantilla> ConsultarTodasPlantillas(int _idPlantilla)
        {
            //Se instancia un objeto conexion 
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            List<Plantilla> miListaplantilla = new List<Plantilla>();

            try
            {
                //Se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[consultarTodasPlantillas]";
                command.CommandTimeout = 10;
                command.Parameters.AddWithValue("@tipoplantilla", _idPlantilla);

                //se ejecuta el metodo del store procedure que busca todos las plantillas del modulo en especifico
                reader = command.ExecuteReader();

                //Se recorre cada row
                while (reader.Read())
                {
                    Plantilla miPlantilla = new Plantilla();
                    //Se asigna cada atributo al objeto plantilla
                    miPlantilla.Id = Convert.ToInt32(reader.GetDecimal(0));
                    miPlantilla.Nombre = reader.GetString(1);
                    //se inserta el cliente en la lista de plantillas
                    miListaplantilla.Add(miPlantilla);
                }

                return miListaplantilla;
            }
            catch (SqlException e)
            {
                throw new Exception("Error en la conexion", e);
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }
        #endregion Consultar Todas Plantillas


    }
}